Relational database systems typically permit access to the database to be managed. Such systems often include authorization and privilege information in the system catalog tables maintained by the system. Appropriate rows in the system catalog tables will be accessed to determine the authorization and privilege settings that apply for a given operation and user. These catalog table rows contain a representation of the authorizations. The catalog table typically has a field for each authorization and either have Y or N in the field for the row. Each row is unique based on the authorization grantor, grantee, and type of grantee (user or group).
For efficiency reasons, relational database systems often include a cache to provide fast access to repeatedly accessed information or data. The authorization and privilege information that is kept in the system catalog tables is a candidate for caching in such a system.
In concurrent database systems, it is also necessary to serialize access to data and information to prevent inconsistencies from arising due to race conditions. Thus, in such systems, where the authorizations and privileges stored in system catalog tables (and potentially copied into caches for such tables) are undergoing maintenance, access to the information is restricted to the database agent that is carrying out the maintenance, to avoid concurrency problems. Exclusive control is typically obtained by the maintenance application as the maintenance operation is carried out on the specific authorization or privilege information. In an SQL relational database system, authorization and privilege maintenance is carried out by an application invoking one of the two statements GRANT or REVOKE.
The result of granting exclusive control to the application invoking a GRANT or REVOKE statement is that other applications are unable to read the information until the maintenance process in question is committed and exclusive control is released by the maintenance application. Other applications requesting the authorization or privilege information are required to wait during the time that the maintenance operation is being carried out.
Where the authorization and privilege information is copied into a cache in memory, the cache access mimics the non-cached exclusive access. Exclusive control of the relevant cache information is therefore typically provided to the agent carrying out the maintenance operation. Such an approach will ensure that for both cached and uncached data, the access will be consistent. However, this exclusive control approach results in potential delays for other requesters that must wait for the exclusive control of the maintenance process to be relinquished before the cached authorization or privilege information may be accessed.
It is therefore desirable to provide for improved access to cached authorization or privilege information without requiring all requesting applications to wait on the completion of maintenance operations.